Type Classes for Lightweight Substructural Types